A Guide to transitioning from software Developer/Engineer to Machine Learning Engineer

A guide on how to transit as a Software Developer to a Machine learning engineer

Shima Nikfal
Towards Data Science

--

Image by Gerd Altmann from Pixabay

This blog is intended for any beginner or professional programmer/or academic people who are interested in machine learning. To step into the machine learning engineering field, you don’t need to rely on data science work experience. This blog is for anyone who plans to learn Machine learning on his own.

Let me tell you how I started my journey to become a machine learning engineer. I have many years of C++ development experiences with an interest in image processing. Lately, machine learning has been applied to many real-world applications. I quickly became fascinated with this new paradigm. Beginning two years ago, I have been actively seeking more information and knowledge in the subject, including self-studying and doing many self projects.

As a person who loves all aspects of image processing, I decided to explore deep learning since two years ago. Now, I want to publish this resource to help other people, that are as fascinated as I am by AI, and who are looking to do the same. I hope this blog makes it easier for them to try the same approach I did.

Table of Contents

  1. Data Science vs Machine Learning Engineering
  2. Machine Learning skills
  3. Machine Learning Programming Skills
  4. Other Activities
  5. Conclusion
  6. Resources

1. Data Science vs Machine Learning Engineering

It is critical to understand the differences between a Data Scientist and a Machine Learning engineer. The Machine Learning Engineer role is specialized for machine learning, and may also be referred to in job descriptions as ‘Software Engineer, Machine Learning’, or ‘Data Engineer’.

There is a wealth of online resources on the difference between Data Scientists and Machine Learning Engineers — make sure to check out:

As part of a machine learning workflow, data scientists utilize statistical analysis to determine which machine learning approach to use. Only then do they begin prototyping and building out those models.

Machine learning engineers will often collaborate with data scientists before and after the modelling process; building data pipelines to feed data into models. Finally, designing an engineering system that will serve these models to ensure continuous model health.

The following diagrams will explain the interaction of different roles within machine learning projects:

Different roles within machine learning projects

2. Machine Learning skills

2.1. Machine learning Theory

There are many resources out there to learn machine learning theory. Personally I like the courses by Andrew Ng. Here are some courses I found useful in understanding machine learning:

Stanford CS229 by Andrew Ng: Machine Learning

This course provides a broad introduction to machine learning and statistical pattern recognition. This course goes much more into the mathematical derivations of the algorithms.

Stanford CS229A by Andrew Ng: Applied Machine learning

This is an amazing course, suppling a complete overview of machine learning. As an applied machine learning course, it is much less mathematical compared to CS229 and spends more time on the practical aspects.

Stanford CS230 by Andrew Ng: Deep Learning

In this course, you will learn the foundations of Deep Learning, understand how to build neural networks, and learn how to lead successful machine learning projects. This course is less focused on mathematics and spends more time in teaching the practical approach to apply machine learning algorithms. This is the most hands-on and practical of this list.

Stanford CS231 by Fei-Fei Li: Convolution Neural Networks

This course provides a detailed introduction to the details of the deep learning architectures with a focus on learning end-to-end models, particularly image classification. It focuses on deep learning in more depth than CS230.

UC Berkeley stat-157 by Alex Smola: Deep learning

This course is a great course on deep learning with an explanation of the latest deep learning architecture. You will learn how to implement each model in detail. You have full access to all the code in GitHub.

These courses are all useful and you will benefit from exploring all of them. In each course, you will learn different things. Theses courses provide excellent grounding in the field. If you want to learn deep learning, you will need to learn the foundations of machine learning and deep learning. You will need this foundation before you go deeper into Computer Vision, Natural Language Processing, Robotics or Deep Reinforcement Learning. You will also see a bit of each specialization from Computer Vision, Natural Language Processing, Speech Recognition, and even a little bit on self-driving cars. That will help you to decide which area of the field is most interesting to you.

2.2. Deep Learning Frameworks

Many libraries exist for building deep learning applications. The most common ones are TensorFlow, Keras and PyTorch. These three libraries are all open-source. There are many resources available to learn more about these frameworks. I have made a comparison between them which you can find in my Github.

2.3. Machine Learning workflow

A machine learning workflow is a process required to build a machine learning project from scratch. This process can vary from one project to another. However, the core common steps of a machine learning project can be found as follow:

Machine learning workflow

3. Machine Learning Programming Skills

3.1. Python

Python is the most common language used in machine learning. Python can be very challenging to debug since it is based on dynamic data typing. For those coming from the strongly structured language such as C++, it can be challenging to adapt to dynamic typing and scripting.

Scripting languages are intended to be very fast to learn and write in, as generally, they request short source code. However, you might face some difficulties as your application grows. First, you do not have the help of a compiler like C++ to catch your errors and mistakes. Moreover, all the types are dynamic, so as your programs get larger you might have a hard time trace and find out the type of the variables. This can make your code becomes error-prone and buggy, especially if it is not well designed.

It is a good practice to use a python package manager. The problem with global installation is that You can only install a single version of a package at one time for a given Python interpreter. This can be an issue when your applications require a different version of the same library. Also, upgrading libraries can break your applications

There are many python package managers but Anaconda is the most commonly used in data science work. Anaconda simplifies package management and deployment. It brings many of the tools used in data science and machine learning with just one install, so it’s great for having a short and simple setup.

Another great feature of Anaconda is conda which is the Anaconda package manager. You can install many libraries using conda. Moreover, In Anaconda we can create a virtual environment and it helps to isolate different libraries and versions. It is a good idea to create a virtual environment for each project if they are using different Python libraries.

3.2. Python libraries

Python’s standard libraries are very large and many may be required for your project. These libraries contain many modules written in C. The most common ones you should know are panda, numpy, matplotlib, opencv-python, scipy, scikit-learn, and tensorboard.

If you would like to learn more, I will leave the useful links in the references section for you to visit.

3.3. Python Integrated Development Environment

There are many integrated development environments (IDEs) that you can choose to develop your software. The common IDEs that being used for machine learning are Jupyter Notebook, PyCharm. These IDEs make programming of machine learning easier.

Juyter notebook is easy if you are prototyping an idea or making a simple function. I find it is not easy to format my code or debug my code in Jupyter Notebook.

PyCharm is an open-source software made at JetBrains who are best known for their Java IDE called IntelliJ IDEA. Some interesting features of PyCharm IDE include a code editor, a very strong debugger with a graphical interface and error highlighting. It has built-in support for Git, SVN, and Mercurial.

4. Other Activities

4.1. Blogs that are freely Available

There are many blogs available with information about AI and machine learning. Some of these blogs belong to well-known companies such as Google or Bair Blog. But if you are looking for simple examples and guides you can refer to the three following blogs; towards data science, medium and machine learning mastery.

4.2. Podcast

The podcast is an amazing resource to get information about the new technology and the market direction. Here are two of my favourite podcasts: Practical AI and AI Today.

4.3. Practicing Machine learning

Sentdex Youtube channel contains many practical applications of machine learning and deep learning. He is focused on the implementation of machine learning and deep learning so he does not go into the theory behind each algorithm. He explains everything step by step in a very simple language that everyone can follow. You can access to all the code from his blog.

I have worked on a simple Dogs vs. Cats classification project using Keras and TensorFlow that can help you to start building deep learning project. You also get familiar with building a data pipeline using TensorFlow Dataset to classify images of cats and dogs. You can access the code in my GitHub.

I made a small regression project which demonstrates how to build a simple linear regression. This code is also accessible from my GitHub.

4.4. Participating in Competitions

Another great place to learn about new technologies and build your network is meetup. Attending meetups can be very useful. Hackathons are another great way to practise and improve your python and deep learning skills. Hackathons are normally a one-day competition in which you will receive real data and a challenge and you need to solve by the end of the day.

By now, we know if we need to build a deep learning project we require data. To start a deep learning project you first need to have a dataset of images. Building a dataset can be very challenging or even impossible. Luckily Kaggle provides us with many free datasets to use for this purpose.

If you reach the point that you need a bigger challenge, you can attend AI competitions. Every year many companies such as AI labs Microsoft, Kaggle and others hold competitions you may participate in.

5. Conclusion

Hopefully, this post was helpful to those wondering how to become a machine learning engineer.

Here are some ideas that you can study on your own:

  • Test Machine learning system
  • Try to learn about machine learning deployment
  • Try to learn about Docker

6. Resources

l\Learn Python from Corey Schafer youtube channel and Sentdex youtube channel: These channels are rich resources for learning python, machine learning, deep learning and natural language processing

Conda cheat sheet: This cheat sheet summarizes commonly used for Conda command-line instructions for quick reference

PyCharm Plugins Library: Plugins are very useful can help you easily expand PyCharm’s features

--

--